﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Jp.Nuits.ForwardProxy
{
    /// <summary>
    /// ユーティリティクラス
    /// </summary>
    public static class Utility
    {
        #region Const
        /// <summary>
        /// ストリーム読み出しのバッファーサイズ
        /// </summary>
        public const int ReadBufferSize = 8 * 1024;
        #endregion

        #region Method
        /// <summary>
        /// inputStreamから取得できるバイトストリームをアウトプットストリームへ書き出す
        /// </summary>
        /// <param name="inputStream"></param>
        /// <param name="outputStream"></param>
        public static void CopyContent(Stream inputStream, Stream outputStream)
        {
            byte[] buffer = new byte[ReadBufferSize];
            while (true)
            {
                int read = inputStream.Read(buffer, 0, buffer.Length);
                if (read == 0)
                {
                    break;
                }
                outputStream.Write(buffer, 0, read);
            }

            outputStream.Flush();
        }

        /// <summary>
        /// 指定されたストリームを例外を発生させずにクローズする。
        /// </summary>
        /// <param name="stream"></param>
        public static void CloseQuiet(Stream stream)
        {
            if (stream != null)
            {
                try
                {
                    stream.Close();
                }
                catch
                {
                    // ignore
                }
            }
        }
        #endregion
    }
}
